package com.tianji.promotion.utils;


import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.concurrent.TimeUnit;

@Retention(value = RetentionPolicy.RUNTIME)
@Target(value = ElementType.METHOD)
public @interface MyLock {
    //锁的名称
    String name();

    //重试时间
    long withTime() default 1;

    //自动过期时间
    long leassTime() default -1;

    //时间单位
    TimeUnit util() default TimeUnit.SECONDS;

    //所的类型
    MyLockType lockType() default MyLockType.RE_ENTRANT_LOCK;

    //策略设计模式
    MyLockStrategy lockStrategy() default MyLockStrategy.FAIL_AFTER_RETRY_TIMEOUT;
}
